// 基于指针

#include<vector>
#include<iostream>
using std::vector;


class Solution {
public:
    void sortColors(vector<int>& nums) {
        int p0 = 0, p1 = nums.size()-1;
        // 保证p0前全0，p1后全2
        for (int i = 0; i <= p1 && !(p0 > p1); i++) {
            while (nums[i] == 2 && i <= p1) {
                nums[i] = nums[p1];
                nums[p1] = 2;
                p1 --;
            }
            if (nums[i] == 0) {
                nums[i] = nums[p0];
                nums[p0] = 0;
                p0 ++;
            }
            
        }
    }
};